/*
 * @Description: 
 * @Version: 
 * @Company: 杭州凯立通信有限公司
 * @Author: Jesen
 * @Date: 2018-11-22 14:00:27
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2018-11-22 15:25:49
 */
/**
 * axios全局配置，包括验证校验及错误处理
 */
import axios from 'axios'
import { Message } from 'element-ui'
// import store from '../store'
// import router from '../router'

// 超时设置
const service = axios.create({
    // baseURL: '/api/', //对接真实开发环境
    baseURL: '/ms/', // 对接easy-mock接口
    timeout: 5000 // 请求超时时间
});

// http request 拦截器
// 每次请求都为http头增加Authorization字段，其内容为token
service.interceptors.request.use(
    config => {
        // if (store.state.user.token) {
        //     config.headers.Authorization = `token ${store.state.user.token}`;
        // }
        return config;
    },
    err => {
        Message.error({ message: '请求超时!' });
        return Promise.resolve(err);
    }
);

// http response 拦截器
// 针对响应代码确认跳转到对应页面
service.interceptors.response.use(
    response => {
        /**
         *下面的注释为通过response自定义的status来标识请求状态，当status返回如下情况为权限有问题，登出并返回到登录页
         * 如通过xmlhttprequest状态码标识http请求状态 逻辑可以写在下面error中*/
        //const res = response.data
        // if (res.status !== 200) {
        //   Message({
        //     message: res.message,
        //     type: 'error',
        //     duration: 5 * 1000
        //   })
        //   // 403:非法token、token过期、其他客户端登录了
        //   if (res.status === 403) {
        //     MessageBox.confirm('你已登出，可以取消继续留在该页面，或者重新登录', '确定登出',{
        //       confirmButtonText: '重新登录',
        //       cancelButtonText: '取消',
        //       type: 'warning'
        //     }).then(() => {
        //       store.dispatch('FedLogOut').then(() => {
        //         location.reload() //为了重新实例化vue-router对象，避免bug
        //       })
        //     })
        //   }
        //   return Promise.reject('error')
        // } else {
        //   return response
        // }
        if (response.status && response.status == 200 && response.data.status == 'error') {
            Message.error({ message: response.data.msg });
            return;
        }
        return response
    },
    error => {
        if (error.response.status == 504 || error.response.status == 404) {
            Message.error({ message: '服务器被吃了⊙﹏⊙∥' });
        } else if (error.response.status == 403) {
            Message.error({ message: '权限不足,请联系管理员!' });
        } else {
            Message.error({ message: '未知错误!' });
        }
        return Promise.resolve(error);
    }
);

export default service;